home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / semaphore.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-05-08  |  2.8 KB  |  88 lines

  1. /* Linuxthreads - a simple clone()-based implementation of Posix        */
  2. /* threads for Linux.                                                   */
  3. /* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr)              */
  4. /*                                                                      */
  5. /* This program is free software; you can redistribute it and/or        */
  6. /* modify it under the terms of the GNU Library General Public License  */
  7. /* as published by the Free Software Foundation; either version 2       */
  8. /* of the License, or (at your option) any later version.               */
  9. /*                                                                      */
  10. /* This program is distributed in the hope that it will be useful,      */
  11. /* but WITHOUT ANY WARRANTY; without even the implied warranty of       */
  12. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        */
  13. /* GNU Library General Public License for more details.                 */
  14.  
  15. #ifndef _SEMAPHORE_H
  16. #define _SEMAPHORE_H    1
  17.  
  18. #include <features.h>
  19. #include <sys/types.h>
  20. #ifdef __USE_XOPEN2K
  21. # define __need_timespec
  22. # include <time.h>
  23. #endif
  24.  
  25. #ifndef _PTHREAD_DESCR_DEFINED
  26. /* Thread descriptors.  Needed for `sem_t' definition.  */
  27. typedef struct _pthread_descr_struct *_pthread_descr;
  28. # define _PTHREAD_DESCR_DEFINED
  29. #endif
  30.  
  31. /* System specific semaphore definition.  */
  32. typedef struct
  33. {
  34.   struct _pthread_fastlock __sem_lock;
  35.   int __sem_value;
  36.   _pthread_descr __sem_waiting;
  37. } sem_t;
  38.  
  39.  
  40.  
  41. /* Value returned if `sem_open' failed.  */
  42. #define SEM_FAILED    ((sem_t *) 0)
  43.  
  44. /* Maximum value the semaphore can have.  */
  45. #define SEM_VALUE_MAX     (2147483647)
  46.  
  47.  
  48. __BEGIN_DECLS
  49.  
  50. /* Initialize semaphore object SEM to VALUE.  If PSHARED then share it
  51.    with other processes.  */
  52. extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value) __THROW;
  53.  
  54. /* Free resources associated with semaphore object SEM.  */
  55. extern int sem_destroy (sem_t *__sem) __THROW;
  56.  
  57. /* Open a named semaphore NAME with open flaot OFLAG.  */
  58. extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  59.  
  60. /* Close descriptor for named semaphore SEM.  */
  61. extern int sem_close (sem_t *__sem) __THROW;
  62.  
  63. /* Remove named semaphore NAME.  */
  64. extern int sem_unlink (__const char *__name) __THROW;
  65.  
  66. /* Wait for SEM being posted.  */
  67. extern int sem_wait (sem_t *__sem);
  68.  
  69. #ifdef __USE_XOPEN2K
  70. /* Similar to `sem_wait' but wait only until ABSTIME.  */
  71. extern int sem_timedwait (sem_t *__restrict __sem,
  72.               __const struct timespec *__restrict __abstime);
  73. #endif
  74.  
  75. /* Test whether SEM is posted.  */
  76. extern int sem_trywait (sem_t *__sem) __THROW;
  77.  
  78. /* Post SEM.  */
  79. extern int sem_post (sem_t *__sem) __THROW;
  80.  
  81. /* Get current value of SEM and store it in *SVAL.  */
  82. extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
  83.      __THROW;
  84.  
  85. __END_DECLS
  86.  
  87. #endif  /* semaphore.h */
  88.